package com.atguigu.java1;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 *      一、网络编程中有两个注意的问题：
 *          1.如何准确地定位网络上一台或多台主机；定位主机上的特定的应用
 *          2.找到主机后如何可靠高效地进行数据传输
 *
 *      二、网络编程中两个要素：
 *          1.对应问题一：IP和端口号
 *          2.对应问题二：提供网络通信协议。TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层)
 *
 *      三、通信要素一：IP和端口号
 *          1.IP:唯一的标识 Internet 上的计算机（通信实体）
 *          2.在Java中使用InetAddress类代表IP
 *          3.IP分类：IPv4和IPv6；万维网和局域网
 *          4.域名：www.baidu.com    www.mi.com    www.sina.com   www.jd.com
 *                  www.vip.com
 *          5.本地回路地址：127.0.0.1对应着：localhost
 *          6.如何实例化InetAddress：两个方法：getByName(String host)、getLocalHost()
 *              两个常用方法：
 *                  getHostName()
 *                  getHostAddress()
 *
 *          7.端口号：正在计算机上运行的进程（程序）
 *            要求：不同的进程有不同的端口号
 *            范围：被规定为一个 16 位的整数 0~65535
 *
 *          8.端口号与IP地址的组合得出一个网络套接字：Socket
 *
 * @author : leimingchao
 * @date Date : 2021年09月04日 20:40
 */
public class InetAddressTest {

    public static void main(String[] args) {

        try {

            //File file = new File("hello.txt");
            InetAddress inetAddress = InetAddress.getByName("192.168.10.14");
            System.out.println(inetAddress);

            InetAddress inetAddress2 = InetAddress.getByName("www.atguigu.com");
            System.out.println(inetAddress2);

            //获取本机地址
            InetAddress inetAddress3 = InetAddress.getByName("127.0.0.1");
            System.out.println(inetAddress3);

            InetAddress inetAddress4 = InetAddress.getLocalHost();
            System.out.println(inetAddress4);

            //获取域名
            System.out.println(inetAddress2.getHostName());
            //获取主机地址
            System.out.println(inetAddress2.getHostAddress());

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}
